package cdu.sl.service;

import cdu.sl.domain.dto.*;
import cdu.sl.domain.po.ClassGroup;
import cdu.sl.domain.vo.ClassGroupVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 班级服务接口
 */
public interface ClassGroupService extends IService<ClassGroup> {
    
    /**
     * 创建班级
     * @param classGroupCreateDTO 班级创建DTO
     * @return 创建后的班级信息
     */
    ClassGroupVO createClassGroup(ClassGroupCreateDTO classGroupCreateDTO);
    
    /**
     * 根据ID获取班级详情
     * @param id 班级ID
     * @return 班级详情
     */
    ClassGroupVO getClassGroupById(Long id);
    
    /**
     * 获取当前用户创建的所有班级
     * @return 班级列表
     */
    List<ClassGroupVO> getCurrentUserCreatedClassGroups();
    
    /**
     * 获取当前用户加入的所有班级
     * @return 班级列表
     */
    List<ClassGroupVO> getCurrentUserJoinedClassGroups();
    
    /**
     * 生成班级加入码
     * @return 班级加入码
     */
    String generateJoinCode();

    /**
     * 更新班级信息
     * @param classGroupUpdateDTO 更新班级信息数据传输对象
     */
    void updateClass(ClassGroupUpdateDTO classGroupUpdateDTO);

    /**
     * 学生通过加入码加入班级
     * @param userJoinClassDTO 加入码
     */
    void joinClass(UserJoinClassDTO userJoinClassDTO);

    /**
     * 删除班级信息
     * @param id
     */
    void deleteClass(Long id);

    /**
     * 审核学生状态信息
     * @param checkClassMembersDTO 审核成员状态DTO
     */
    void checkMembersStatus(CheckClassMembersDTO checkClassMembersDTO);

    /**
     * 根据加入码获取班级信息
     * @return
     */
    ClassGroupVO getClassGroupByJoinCode(String joinCode);
}